package org.Iter4.Dominio;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Enumeration;
import java.util.Hashtable;

import org.Iter2.Persistencia.Agente;


public class GestorBuscaCaptura {
	private Hashtable<String, PersonaBuscaCaptura> tablaPersonasBuscaCaptura;

	public GestorBuscaCaptura() throws Exception {
		this.tablaPersonasBuscaCaptura = new Hashtable<String, PersonaBuscaCaptura>();
		consultarPersonasBuscaCaptura();
	}
	
	

	public Hashtable<String, PersonaBuscaCaptura> getTablaPersonasBuscaCaptura() {
		return tablaPersonasBuscaCaptura;
	}



	public void consultarPersonasBuscaCaptura() throws Exception{
		ResultSet rs = null;
		String sentencia = "SELECT * FROM personasbuscacaptura";
		try {
			Agente a = Agente.getAgente();
			rs = a.consultar(sentencia);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
		while(rs.next()){
			String ident = rs.getString("ID");
			String name = rs.getString("nombre");
			String ape = rs.getString("apellidos");
			String fechaNac = rs.getString("fechaNacimiento");
			String nacion = rs.getString("nacionalidad");
			String foto = rs.getString("rutaFoto");
			String charges = rs.getString("cargos");
			
			PersonaBuscaCaptura person = new PersonaBuscaCaptura(ident,name,ape,fechaNac,nacion,foto,charges);
			this.tablaPersonasBuscaCaptura.put(ident, person);
			
		}
		
	}
	
	public boolean addPersonaBuscaCaptura(PersonaBuscaCaptura person) throws Exception{
		boolean resultado=true;
		
		String ident = person.getID();
		String name = person.getNombre();
		String ape = person.getApellidos();
		String fechaNac = person.getFechaNacimiento();
		String nacion = person.getNacionalidad();
		String foto = person.getRutaFoto();
		String charges = person.getCargos();
		
		String sentencia = "INSERT INTO personasbuscacaptura (ID,nombre,apellidos,fechaNacimiento,nacionalidad,rutaFoto,cargos) VALUES ('"+ ident+"','"+name+"','"+ape+"','"+fechaNac+"','"+nacion+"','"+foto+"','"+charges+"')";
		if(tablaPersonasBuscaCaptura.containsKey(person.getID())){
			resultado=false;
		}else{
		
		try {
			Agente a = Agente.getAgente();
			a.gestionar(sentencia);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		tablaPersonasBuscaCaptura.put(ident, person);
		}
		return resultado;
	}
	public boolean modificarPersonaBuscaCaptura(PersonaBuscaCaptura person) throws Exception{
		boolean modificarPersona=false;
		String ident = person.getID();
		String name = person.getNombre();
		String ape = person.getApellidos();
		String fechaNac = person.getFechaNacimiento();
		String nacion = person.getNacionalidad();
		String foto = person.getRutaFoto();
		String charges = person.getCargos();
		
		String sentencia = "UPDATE personasbuscacaptura SET nombre='"+name+"',apellidos='" +ape+"',fechaNacimiento='"+fechaNac+"',nacionalidad='"+nacion+"',rutaFoto='"+foto+"',cargos='"+charges+"' WHERE ID='"+ident+"'";
	    if(tablaPersonasBuscaCaptura.containsKey(ident)){
	    	modificarPersona = true;
	    }
	    else modificarPersona = false;
	    
	    if(modificarPersona){
	    	tablaPersonasBuscaCaptura.remove(ident);
		try {
			Agente a = Agente.getAgente();
			a.gestionar(sentencia);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
			tablaPersonasBuscaCaptura.put(ident, person);

		}
	    
		return modificarPersona;
	}
	public boolean eliminarPersonaBuscaCaptura(String ID) throws Exception{
		boolean eliminarPersona=true;
		
		String sentencia = "DELETE FROM personasbuscacaptura WHERE ID='"+ID+"'";
		try {
			Agente a = Agente.getAgente();
			a.gestionar(sentencia);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		tablaPersonasBuscaCaptura.remove(ID);
		return eliminarPersona;
	}
	
	public String siguienteID(){
		Enumeration <String> enumer =tablaPersonasBuscaCaptura.keys();
		int mayor=0;
		int actual=0;
		
		while(enumer.hasMoreElements()){
			actual=Integer.parseInt(enumer.nextElement());
			
			if(actual>mayor)
				mayor=actual;
		}
		int indice=(mayor)+1;
		String ID=""+indice;
		return ID;
	}
	
	public void generarFichero(String ID){
		
	}
}
